#ifndef _OCPP_VolumeCompute_H__
#define _OCPP_VolumeCompute_H__

#include "VolumeDef.h"
#include "VolumeAlgorithm.h"

namespace OCPP
{
	namespace Volume
	{
		using VolumeComputePair = std::tuple<String, String>;
		using VolumeComputeList = std::vector<VolumeComputePair>;

		class _volumeExport VolumeCompute
		{
		public:
			virtual ~VolumeCompute() {}
			void setAlgorithm(std::shared_ptr<VolumeAlgorithm> ncAalgorithm);
			void setComputeList(VolumeComputeList computeList);
			virtual void extract(int levelIndex, int timeIndex, const VolumeOptions& options) = 0;
		protected:
			std::shared_ptr<VolumeAlgorithm> _algorithm;
			VolumeComputeList _computeList;
		};
	}
}


#endif // !_OCPP_NcOptions_H__
